<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
	xmlns:ui="http://java.sun.com/jsf/facelets"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:f="http://java.sun.com/jsf/core">

<ui:composition template="/pages/layout/masterLayout.xhtml">
	<ui:define name="tituloPagina">Bem vindo!</ui:define>
	<ui:define name="conteudo">
		<h1>Introdução a UEL - Unified Expression Language</h1>
		<p>
			O JSF utiliza uma linguagem chamada de Unified Expression Language,
			ou simplesmente UEL ou EL, para referênciar código Java a partir de
			páginas JSF. A linguagem é bem simples e segue a seguinte sintaxe:
			<!-- Aqui no código fonte é utilizado uma gambiarra para mostrar a expressão em o JSF processá-la! -->
			<h:outputText value="#" />{expressao} 
		</p>
		<p>Com a EL é possível:</p>
		<ul>
			<li>Ler dados armazenados nos managed beans ou objetos
				implicitos (estes são como beans, mas nao precisam ser desenvolvidos
				pela aplicação pois ja fazem parte do framework JSF)</li>
			<li>Escrever dados nos managed beans durante um submit</li>
			<li>Chamar métodos estáticos e públicos</li>
			<li>Resolver operações aritméticas</li>	
		</ul>
		<h2>Exemplos</h2>
		<pre class="prettyprint lang-html">Bem vindo <h:outputText value="#" />{usuario.nome}</pre>
		<p>Esta expressão acessará o método público getNome() do bean
			registrado com o nome 'usuario'</p>
		<pre class="prettyprint lang-html">&lt;h:inputText value="<h:outputText value="#" />{usuario.nome}"/&gt;</pre>
		<p>Esta expressão está contida dentro de um componente JSF que vai
			renderizar um "input" do tipo "text". Quando o input for renderizado,
			ele virá preenchido com o valor que retornar pelo método público
			getNome() do bean usuário, e, se este componente estiver dentro de um
			form e o usuário clicar no submit do form, o JSF vai chamar o método
			público setNome(String valor) deste bean!</p>
		<pre class="prettyprint">&lt;h:panelGroup rendered="<h:outputText value="#" />{usuario.logado == true}"&gt;
	Siga por este &lt;h:outputLink value="http://www.xxx.com" rendered="<h:outputText value="#" />{usuario.idade &gt;= 18}"&gt;link&lt;/h:outputLink&gt;
	Siga por este &lt;h:outputLink value="http://www.disney.com" rendered="<h:outputText value="#" />{usuario.idade lt 18}"&gt;link&lt;/h:outputLink&gt;
&lt;/h:panelGroup&gt;</pre>
		<p>Este código possui três exemplos de expressões. A primeira, verifica se um usuário está logado no sistema (vai chamar o método público getLogado() do bean usuário). A segunda e a terceira verificam a idade do usuário de duas formas diferente: utilizando o simbolo padrão de "maior ou igual" ou utilizando uma palavra reservada da EL: lt (less than).</p>
		<p>Para entender mais sobre a linguagem de expressões, veja o <a href="http://download.oracle.com/javaee/5/tutorial/doc/bnahq.html">tutorial da <strike>Sun</strike> Oracle.</a></p>
	</ui:define>
</ui:composition>
</html>